2013-01-02 - 5380 - Spec - Packing program re-write #Shipping #abappacking #US #APAC
SPECIFICATIONS
5380 - Packing program re-write
Purpose
Develop a new Functional Module that would work for US and China Packing Programs thereby avoiding additional time and effort in carrying out changes to multiple FMs and/or programs.
Admin Info
Title
|
5380 - Packing program re-write
|
|
Requested By
|
Jeffrey Mau
|
|
Spec Created By
|
Thi Tran
|
|
Spec Created Date
|
11/16/2012
|
|
Spec QA by
|
NA
|
|
Objects
|
ZRSD_PACKING
ZRSD_PACKING_CHINA
ZISD_JCP753_ROUTING_REQ
Z_FM_UPC_FEDEX_PACKING_INFO
Z_FM_JCPENNY_PACKING_INFO_NEW
LE_SSCC
ZFG_PACK
ZFM_PACKING
ZPACK_IDOC
ZPACK_INPUT
ZPACK_LOG
|
|
Status
(WIP/Complete)
|
Complete
|
|
References
Prior Tickets
5393 - LIDS 12W Max Box Size
Documents
Program [[#|Flow]] diagram
Packing Program Re-Write v5.pdf
Functional Requirement
There are currently 3 packing programs and 2 function modules that essentially do the same thing in terms of packing. Each time there is an enhancement or bug fix, all 5 programs need to be updated. The specification is created to re-write the packing program into one function module for easier and more efficient maintenance.
A Visio diagram has been created to flow out the program and each process from the diagram may be considered a sub-routine or object that is reusable, if needed. Each numbered item from the flow has a corresponding section in this document that will detail the logic that corresponds to that process.
Solution Summary
Discuss this section with Requester and get approval prior to beginning work
Assumptions / Rules:
- Caselot orders must use a packing code.
- Default Max Box Size is 6W. This value should be stored as a parameter and NOT be hardcoded in the program.
- Default Pack By is Mixed. This value should be stored as a parameter and NOT be hardcoded in the program.
- Pre-packed [[#|materials]] (UOM is P*) should not be split up.
- Mixed packing with materials with an alternate UOM is not supported. When Pack Mixed, the packing must be by Family or Sku.
- SSCC numbers should not be duplicated.
- When records are passed back to the DSSCO application, the records should be sorted by Sales Order, Box Number, Line Item and then Grid Sort Key. Right now it is sorting by the actual Grid value. For example, if an order has headwear sizes 638, 612, 658, 634 and 678, the sort order should be the same, but in DSSCO, it will sort in order 612, 634, 638, 658, 678, which is numerical order.
- Currently the business sometimes creates PO’s for stock (no associated sales orders) and sales order line items. This is confusing for the packing program since non-SO PO’s will have a default pack logic and SO line items may have it’s own VAS codes. Going forward, it is decidedthat the business should not be creating PO’s that are mixed with lines that are and are not associated with Sales Orders. Decision made on 1/2/13 by Robin Hahn and Chris Kraft.
Flow Diagram Processes
Determine Calling Program or Function Module
There are a number of caling programs and function modules that require different packing details. This sub-routine should determine which program or function module is calling the function module. The programs currently are:
- US Packing Program – Program ZRSD_PACKING
- China Packing Program – Program ZRSD_PACKING_CHINA
- DSSCO Function Module – Function Module Z_FM_UPC_FEDEX_PACKING_INFO
- JCP TMS Routing –Function Module Z_FM_JCPENNY_PACKING_INFO_NEW from Program ZISD_JCP753_ROUTING_REQ
NOTE - Rather than having a function module call this new function module, we will want to have DSSCO and the JCP TMS Routing program directly call the new function module.
Determine Inputs and Outputs
1. US Packing Program
i. Input
- Deliveries
- Shipping Points
ii. Output
2. China Packing Program
i. Input
ii. Output
3. DSSCO
i. Input
ii. Output
- Structure ZSSD_JCPENNY
- Structure ZSSD_JCPENNY_COUNT
4. JCP TMS Routing
i. Input
ii. Output
- Structure ZSSD_JCPENNY
- Structure ZSSD_JCPENNY_COUNT
Input Type
The input type will be either a list of Deliveries or Purchase Orders. Determine what input type is being passed in order to determine follow on steps.
Get all PO Line Item Data
Based on the Purchase Order numbers passed, get all the undeleted PO line item data.
Determine Alternate UOM Pack Qty
Check the materials associated with the line items and check to see if have an alternate units of measure. If there is one for carton (CAR), the number EA per carton should be the maximum number of units in a 1W.
For example, the above material states that 1 CAR = 9 EA. Therefore, rather than the default of 12 caps in each box, there maximum number of caps that fit in the box are 9. Therefore, the W in the max box size stands for 9, not 12.
Pack Based on Alternate UOM Qty, Pack By Sku and Default Max Box Size
See
Pack Based on Alternate UOM Qty, Pack By and Max Box SizeLogic passing the alternate unit of measure, Pack By Sku and default Max Box Size.
Combining Inner Cartons to larger Master Cartons
In addition to the standard packing logic described in
Pack Based on Alternate UOM Qty, Pack By and Max Box SizeLogic, if there are any remaining inner cartons that are less than the max box size, combine them to fit into master cartons.
This is to be done only for Purchase Orders without associated Sales Orders (stock and program materials that are being shipped to the DC), in order to combine and reduce the number of boxes shipped and the damage to the smaller boxes.
Purchase Order without Sales Order: Pack By = Sku, Max Box Size = 6W
Material
|
Size
|
Qty
|
UOM
|
12345
|
700
|
84
|
EA
|
12345
|
718
|
84
|
EA
|
12345
|
714
|
84
|
EA
|
67890
|
738
|
84
|
EA
|
67890
|
712
|
84
|
EA
|
67890
|
758
|
84
|
EA
|
67890
|
734
|
84
|
EA
|
ABCDE
|
SM
|
14
|
P6
|
ABCDE
|
MD
|
14
|
P6
|
ABCDE
|
LG
|
14
|
P6
|
Normally, the above order would Pack by Sku and pack in the following manner.
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-6W
|
12345
|
700
|
72
|
EA
|
00002-1W
|
12345
|
700
|
12
|
EA
|
00003-6W
|
12345
|
718
|
72
|
EA
|
00004-1W
|
12345
|
718
|
12
|
EA
|
00005-6W
|
12345
|
714
|
72
|
EA
|
00006-1W
|
12345
|
714
|
12
|
EA
|
00007-6W
|
67890
|
738
|
72
|
EA
|
00008-1W
|
67890
|
738
|
12
|
EA
|
00009-6W
|
67890
|
712
|
72
|
EA
|
00010-1W
|
67890
|
712
|
12
|
EA
|
00011-6W
|
67890
|
758
|
72
|
EA
|
00012-1W
|
67890
|
758
|
12
|
EA
|
00013-6W
|
67890
|
734
|
72
|
EA
|
00014-1W
|
67890
|
734
|
12
|
EA
|
00015-6W
|
ABCDE
|
SM
|
12
|
P6
|
00016-1W
|
ABCDE
|
SM
|
2
|
P6
|
00017-6W
|
ABCDE
|
MD
|
12
|
P6
|
00018-1W
|
ABCDE
|
MD
|
2
|
P6
|
00019-6W
|
ABCDE
|
LG
|
12
|
P6
|
00020-1W
|
ABCDE
|
LG
|
2
|
P6
|
The original Pack by Sku logic, above, would simply put the remaining 12 EA and 2 P6 from each Sku into their own 1W. In order to save on handling fees and possible damage to smaller cartons, we want to pack the small inners into larger master cartons using the same max box size logic. The following order should be packed, as follows:
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-6W
|
12345
|
700
|
72
|
EA
|
00002-6W
|
12345
|
718
|
72
|
EA
|
00003-6W
|
12345
|
714
|
72
|
EA
|
00004-6W
|
67890
|
738
|
72
|
EA
|
00005-6W
|
67890
|
712
|
72
|
EA
|
00006-6W
|
67890
|
758
|
72
|
EA
|
00007-6W
|
67890
|
734
|
72
|
EA
|
00008-6W
|
ABCDE
|
SM
|
12
|
P6
|
00009-6W
|
ABCDE
|
MD
|
12
|
P6
|
00010-6W
|
ABCDE
|
LG
|
12
|
P6
|
00011-6W
|
12345
|
700
|
12
|
EA
|
00011-6W
|
12345
|
718
|
12
|
EA
|
00011-6W
|
12345
|
714
|
12
|
EA
|
00011-6W
|
67890
|
738
|
12
|
EA
|
00011-6W
|
67890
|
712
|
12
|
EA
|
00011-6W
|
67890
|
758
|
12
|
EA
|
00012-4W
|
67890
|
734
|
12
|
EA
|
00012-4W
|
ABCDE
|
SM
|
2
|
P6
|
00012-4W
|
ABCDE
|
MD
|
2
|
P6
|
00012-4W
|
ABCDE
|
LG
|
2
|
P6
|
Read Sales Order Line Item Data
Based on the Sales Order numbers passed, get all the unrejected schedule line item data.
Read Delivery or Sales Order Line Items
From the list of Deliveries or Sales Orders, get the associated line item data. If getting sales order line items, only grab unrejected schedule line item data.
Get VAS Codes
Get the VAS codes for the associated line item data.
Pre-Packed VAS Code Exists
Determine if any of the VAS codes are “PPP” (Pre-Packed Packing).
Are any Line Items EA UOM
Determine if any of the line item units of measure are “EA”.
Write PPP Error Message to Error Log
This error message should say “EA unit of measure invalid for Pre-Packed Packing”.
Pre-Packed VAS Packing Logic
This packing logic should create one handling unit using 1W box size for each unit ordered, regardless of the pre-pack UOM.
For example, if 4 P6’s are ordered, 4 handlling units should be created using a 1W box size. If 8 P12’s are ordered, 8 handling units should be created using a 1W box size. If 5 P6’s and 7 P9’s are ordered, there should be 12 handling units created; 5 for P6’s and 7 for P9’s.
Crossdock
Determine if this is a Crossdock, by looking at the Usage of on the Sales Order header Sales tab.
Crossdock Packing Logic
A crossdock should be packed using the ratios from the ‘Customer Caselot Quantity’ line item long text. Look to use the Customer Caselot Quantity in the language of the customer master’s language, not just English.
There is no VAS code associated with Crossdocks. The max box size used for a Crossdock depends on the size run (sum of ratio).
- If the size run is between 1 – 15, the max box size is 1W.
- If the size run is between 16 – 30, the max box size is 2W.
- If the size run is between 30 – 45, the max box size is 3W.
For example, the above screenshot shows 2-3-2-3-2-, which is a size run of 12, the max box size is 1W. If the caselot quantity was 4-4-6-4-4-, which is a size run of 22, the max box size is 2W.
Each line item can have its own caselot quantity, therefore should be packed smilar to Pack by Family, where only the same materials can be packed together. Once the line item ratio is determined, the max box size is defined, the packing should be based on the grid quantities.
For example, if the ratio is 2-2-4-2-2- , the max box size would be 1W.
Using the order quantity above, there would be 3 1W’s packed for this order. Each would have 2 of grid 714, 2 of grid 738, 4 of grid 712, 2 of grid 758 and 2 of grid 734.
If the quantities from the Sales Order Line Item doesn’t match the ratios from the caselot text, the following error message should be logged, “Crossdock quantity does not match size run ratio for Sales Order & Line Item &”, where you pass the sales order and line item numbers.
Caselot
Determine if this is a Caselot, by looking at the Usage of on the Sales Order header Sales tab.
Caselot Packing Logic
A caselot should be packed using the ratios from the ‘Customer Caselot Quantity’ line item long text. Look to use the Customer Caselot Quantity in the language of the customer master’s language, not just English.

The logic is very similar to the Crossdock packing logic, except there are VAS codes to determine max box size. The three caselot VAS codes are:
P16 uses max box size of 1W, P17 uses max box size of 4W and P18 uses max box size of 6W.If none of the above VAS codes are defined for a Caselot, the order should not pack and the following error message should be logged, “Packing code not maintained for Sales Order & Line Item &”, where you pass the sales order and line item numbers.
If the quantities from the Sales Order Line Item doesn’t match the ratios from the caselot text, the following error message should be logged, “Caselot quantity does not match size run ratio for Sales Order & Line Item &”, where you pass the sales order and line item numbers.
If the run size is over 12, ignore the P code from the line item and pack according to the same logic used in the Crossdock, which is:
- If the size run is between 1 – 15, the max box size is 1W.
- If the size run is between 16 – 30, the max box size is 2W.
- If the size run is between 30 – 45, the max box size is 3W.
Determine Pack By
There are 3 different Pack By methods; pack by family, pack by sku and pack mixed.
- P19 – Pack Mixed allows any material and size to be packed in one handling unit (considers entire order quantity)
- P02 – Pack by Family only allows the same material to be packed in one handling unit (considered line item quantities)
- P01 – Pack by Sku only allows the same material and grid to be packed in one handling unit (considers schedule line quantities)
If the sales order or delivery has different packing instructions on the line items and any are pack mixed, the whole order should be pack mixed.
The following example should Pack Mixed with Max Box Size of 3W.
Line Item
|
Pack By
|
Max Box Size
|
10
|
Family
|
1W
|
20
|
Sku
|
2W
|
30
|
Mixed
|
3W
|
40
|
Mixed
|
6W
|
The following example should Pack Mixed with Max Box Size of 10W.
Line Item
|
Pack By
|
Max Box Size
|
10
|
Mixed
|
10W
|
20
|
Sku
|
2W
|
30
|
Family
|
4W
|
40
|
Mixed
|
6W
|
Determine Max Box Size
There are 7 max box sizes; 1W, 2W, 3W, 4W, 6W, 10W and 12W.
- P05 – Max Box Size 1W
- P03 – Max Box Size 2W
- P04 – Max Box Size 3W
- P06 – Max Box Size 4W
- P07 – Max Box Size 6W
- P20 – Max Box Size 10W
- P94 – Max Box Size 12W
If a Max Box Size is not defined, use the default of 6W.
The W in the box size equates to the maximum number of caps that can fit into a box, which by default should be 12.So 1W can fit 12 caps, a 2W can fit 24 caps, a 3W can fit 36 caps, etc… The default number of caps can be overridden if an alternate unit of measure exists; see section
Determine Alternate UOM Pack Qty to determine this.
Max Box Size defines the largest box to be used for the order, but may use a smaller box size depending on the quantity being order. If there is a remainder of qty after the max box size is met, the next lower max box size should be used.
- If the max box size is 6W and the order is for 84 EA, the packing should include a 6W, with 36 EA, and a 1W with the remaining 12 EA.
- If the max box size is 10W and the order is for 264 EA, the packing should include 2 10W’s, each with 120 EA in each, and a 2W with the remaining 24 EA.
Pack Based on Alternate UOM Qty, Pack By and Max Box Size
See
Pack Based on Alternate UOM Qty, Pack By and Max Box SizeLogic passing the alternate unit of measure, Pack By and Max Box Size determined in previous logic.
Pack Mixed Logic
Pack Mixed allows for any material and size to be packed into the same handling unit. So based on the max box size, as many caps that will fit into a handling unit should be packed regardless of material and size for the entire sales order, delivery or PO; while other packing logic is line item or schedule line dependant.
Use the Max Box Size of the first line item for the entire order. If the Sales Order or Delivery have varying Pack By and Max Box Size, and any of the line items is Pack Mixed, the entire order should be Pack Mixed using the Max Box Size for that line item.
Any remaining inner cartons should be combined into the max master carton. See section on
Combining Inner Cartons to larger Master Cartons for this logic.
The following example should Pack Mixed with Max Box Size of 3W.
Line Item
|
Pack By
|
Max Box Size
|
10
|
Family
|
1W
|
20
|
Sku
|
2W
|
30
|
Mixed
|
3W
|
40
|
Mixed
|
6W
|
The following example should Pack Mixed with Max Box Size of 10W.
Line Item
|
Pack By
|
Max Box Size
|
10
|
Mixed
|
10W
|
20
|
Sku
|
2W
|
30
|
Family
|
4W
|
40
|
Mixed
|
6W
|
Mixed Packwith Multiple UOM Example 1:No Alternate UOM, Pack By = Mixed, Max Box Size = 1W
Material
|
Size
|
Qty
|
UOM
|
12345
|
SM
|
5
|
P6
|
67890
|
LG
|
1
|
P12
|
Pre-packed materials (UOM is P*) should not be split up between handling units. For example, if there are 5 P6’s and 1 P12 with a Max Box Size of 1W, there should be 4 handling units:
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-1W
|
12345
|
SM
|
2
|
P6
|
00002-1W
|
12345
|
SM
|
2
|
P6
|
00003-1W
|
67890
|
LG
|
1
|
P12
|
00004-1W
|
12345
|
SM
|
1
|
P6
|
It should not be trying to split the P12 into half of a handling unit. For example, it should
NOT be doing this:
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-1W
|
12345
|
SM
|
2
|
P6
|
00002-1W
|
12345
|
SM
|
2
|
P6
|
00003-1W
|
12345
|
SM
|
1
|
P6
|
00003-1W
|
67890
|
LG
|
.5
|
P12
|
00004-1W
|
67890
|
LG
|
.5
|
P12
|
Mixed Pack with Multiple UOM Example 2: No Alternate UOM, Pack By = Mixed, Max Box Size = 6W
Material
|
Size
|
Qty
|
UOM
|
12345
|
SM
|
5
|
P6
|
12345
|
MD
|
5
|
P6
|
67890
|
LG
|
120
|
EA
|
34567
|
MD
|
10
|
P12
|
Using the materials above, the logic should pack as much into a 6W (72 EA) into as few boxes as possible:
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-6W
|
67890
|
LG
|
72
|
EA
|
00002-6W
|
34567
|
MD
|
6
|
P12
|
00003-6W
|
34567
|
MD
|
4
|
P12
|
00003-6W
|
12345
|
SM
|
2
|
P6
|
00004-6W
|
12345
|
SM
|
3
|
P6
|
00004-6W
|
12345
|
MD
|
5
|
P6
|
00004-6W
|
67890
|
LG
|
24
|
EA
|
00005-2W
|
67890
|
LG
|
24
|
EA
|
Mixed Pack with Multiple UOM Example 3: Alternate UOM, Pack By = Mixed, Max Box Size = 6W
Material
|
Size
|
Qty
|
UOM
|
Alt. UOM
|
12345
|
SM
|
50
|
EA
|
None
|
12345
|
MD
|
12
|
EA
|
None
|
34567
|
MD
|
10
|
EA
|
1 CAR = 2 EA
|
34567
|
LG
|
5
|
EA
|
1 CAR = 2 EA
|
56789
|
LG
|
10
|
P12
|
None
|
78901
|
XL
|
50
|
EA
|
1 CAR = 9 EA
|
If there are any materials that are Alternate Unit of Measure materials, all other line items should be pack mixed and then the alternate unit of measure materials should be pack by family. Then if there are remaining inner cartons that can be combined, they should be combined into the largest max box size.
Using the order above, the logic should pack all non-alternate UOM materials mixed and then pack the alternate UOM by family.
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
Notes
|
00001-6W
|
56789
|
LG
|
6
|
P12
|
Pack mixed
|
00002-6W
|
56789
|
LG
|
4
|
P12
|
Pack mixed
|
00002-6W
|
12345
|
SM
|
24
|
EA
|
Pack mixed
|
00003-4W
|
12345
|
SM
|
26
|
EA
|
Pack mixed
|
00003-4W
|
12345
|
MD
|
12
|
EA
|
Pack mixed
|
00004-6W
|
34567
|
MD
|
10
|
EA
|
Pack by Family
|
00004-6W
|
34567
|
LG
|
2
|
EA
|
Pack by Family
|
00005-2W
|
34567
|
LG
|
3
|
EA
|
Pack by Family
|
00006-6W
|
78901
|
XL
|
54
|
EA
|
Pack by Family
|
00007-3W
|
78901
|
XL
|
26
|
EA
|
Pack by Family
|
Now the remaining inners should be combined into the larger max box size master carton, if possible. Because 00003-4W, 00005-2W and 00007-3W are remaining inner cartons left over, they should be combined into the max box size master cartons to save space and handling fees. This can be done by combining 00003-4W, 00005-2W into a 6W. This is similar to the
Combining Inner Cartons to larger Master Cartons logic, under topic 7. Therefore, the final packing of this order should look like this:
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
Notes
|
00001-6W
|
56789
|
LG
|
6
|
P12
|
Pack mixed
|
00002-6W
|
56789
|
LG
|
4
|
P12
|
Pack mixed
|
00002-6W
|
12345
|
SM
|
24
|
EA
|
Pack mixed
|
00003-6W
|
34567
|
MD
|
10
|
EA
|
Pack by Family
|
00003-6W
|
34567
|
LG
|
2
|
EA
|
Pack by Family
|
00004-6W
|
12345
|
SM
|
26
|
EA
|
Pack mixed
|
00004-6W
|
12345
|
MD
|
12
|
EA
|
Pack mixed
|
00004-6W
|
34567
|
LG
|
3
|
EA
|
Pack by Family
|
00005-6W
|
78901
|
XL
|
54
|
EA
|
Pack by Family
|
00006-3W
|
78901
|
XL
|
26
|
EA
|
Pack by Family
|
Pack Based on Alternate UOM Qty, Pack By and Max Box Size Logic
Packing of a line items depends on the Alternate UOM Qty , Pack By and Max Box Size. Alternate UOM determines the maximum number of caps that will fit into an inner carton. Pack By determines if the items are packed by line item (Pack by Family) or schedule line (Pack By Sku). Max Box Size determines the maximum number of caps in one handling unit.
See the above pre-packed example in the
22. Pack Mixed Logic section for how pre-packs cannot be split between handling units.
Packing Example 1:Alternate UOM Qty = 9, Pack By = Family, Max Box Size = 2W
Material
|
Size
|
Qty
|
UOM
|
12345
|
SM
|
15
|
EA
|
12345
|
MD
|
15
|
EA
|
12345
|
LG
|
15
|
EA
|
67890
|
SM
|
10
|
EA
|
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-2W
|
12345
|
SM
|
15
|
EA
|
00001-2W
|
12345
|
LG
|
3
|
EA
|
00002-2W
|
12345
|
MD
|
15
|
EA
|
00002-2W
|
12345
|
LG
|
3
|
EA
|
00003-1W
|
12345
|
LG
|
9
|
EA
|
00004-2W
|
67890
|
SM
|
10
|
EA
|
The alternate UOM is 9, therefore the max number of caps in each 1W is 9; making it a max of 18 in a 2W. Because it was Pack By Family, although there was room left in the 3rd handling unit for 9 more caps, it did not mix materials 12345 and 67890; leaving the box size used for the third handling unit 1W.
Packing Example 2: No Alternate UOM, Pack By = Sku, Max Box Size = 4W
Material
|
Size
|
Qty
|
UOM
|
12345
|
SM
|
10
|
P6
|
12345
|
MD
|
12
|
P6
|
67890
|
LG
|
120
|
EA
|
34567
|
MD
|
12
|
P12
|
Handling Unit
|
Material
|
Size
|
Qty
|
UOM
|
00001-4W
|
12345
|
SM
|
8
|
P6
|
00002-1W
|
12345
|
SM
|
2
|
P6
|
00003-4W
|
12345
|
MD
|
8
|
P6
|
00004-2W
|
12345
|
MD
|
4
|
P6
|
00005-4W
|
67890
|
LG
|
48
|
EA
|
00006-4W
|
67890
|
LG
|
48
|
EA
|
00007-2W
|
67890
|
LG
|
24
|
EA
|
00008-4W
|
34567
|
MD
|
4
|
P12
|
00009-4W
|
34567
|
MD
|
4
|
P12
|
00010-4W
|
34567
|
MD
|
4
|
P12
|
There is no alternate UOM, therefore the max number of caps in each 1W is 12; making it a max of 48 in a 4W. Because it is Pack By Sku, although there is room left if the 2nd, 4th and 7th handling unit to fill a 4W, it does not mix material 12345 grid SM with material 12345 grid MD with materials 67890 grid LG with material 34567 grid MD. They are all packed by size.
As there are an infinite number of combinations between Alternate UOM, Pack By and Max Box Size, this document will not go through each one, but the rules should be understand from the examples above:
- Alternate UOM defines the maximum number of EA’s that can fit in a 1W.
- Pack By Family allows the same material, regardless of size, into the same handling unit.
- Pack By Sku allows the same grid size per material to be packed into the same handling unit.
- Max Box Size defines the largest box that can be used and any remaining should fit into smaller boxes, so as not to waste space and keep shipping costs to a minimum for the customer.
- Pre-packed materials (UOM P*) cannot be split between handling units.
Handling Unit (SSCC)Number Generation Logic
A current issue is that handling units are being duplicated when the packing program is run more than once at the same time. This cannot occur as our customers should not and cannot get duplicate SSCC’s, as it results to errors in their system and chargebacks to the business.
Currently, the program is using a number in TVARVC. Going forward, we will use the SAP number range LE_SSCC. Create an interval for number range object LE_SSCC that begins with 000000000, ends with 999999999 and a current value that is the last 9 digit serial number of the TVARVC value for ZRSD_PACKING and end with 999999999. For example, if the current TVARVC value is 00007191060007607022, the interval should begin with 000000000 and end with 999999999, with a current value of 000760703.
Then using the GS-1 standards for SSCC calculation, the 20 character SSCC should be calculated. Thedefinition can be found at
http://www.gs1.org/barcodes/technical/idkeys/sscc.
The SSCC number is broken down into 5 segments:
The Application Identifier is 00.
The Extension Digit is 0.
New Era’s GS1 Company Prefix is 0719106.
Serial Number would be the value from number range LE_SSCC.
Check Digit would a modulo-10 calculated number.
For example, if using the number range value above, the SSCC would be 00007191060007607039.
ZRSD_PACKING* Variants in TVARVC
Currently, the US and China programs use variants ZRSD_PACKING, ZRSD_PACKING_CHINA and ZRSD_PACKING_INBD in order to determine the delivery number range when running the program in batch / background mode.
Variable ZRSD_PACKING and ZRSD_PACKING_CHINA stores the last delivery number of the last time the batch [[#|job]] was run as LOW and the SSCC (discussed above) as HIGH. This tells the program to take the delivery number and use that as the low end range and the highest possible delivery number 0180000000 as the high when determining the range of delivery numbers to pack in the current run of the program. This method is inaccurate and relies on the previous job to run successfully and populate the delivery number.
Going forward, when packing in the background, the selection criteria should be:
- Deliveries with the correct shipping points from the program.
- The US program uses a variant that defines the shipping points and those are the ones that should be used when pulling the list of deliveries to pack. These shipping points should NOT be hard coded, as as new plants are added, we don’t want to have to update the program to include them in the packing step.
- The China program has a list of the dropship plants defined in TVARVC variable PACK_CHINA_SHIP_PNT.
- Deliveries should not have been PGI’d (LIKP-WADAT_IST = blank).
- Deliveries should have a packing status that is not complete (VBUK-PKSTK <> C).
Test Plan
List test scenarios/cases to be executed here
Note: During DSSCO tesing, make sure packing from DSSCO and SAP match exactly
Test Scenario
|
Testing Program
|
Expected Results
|
Validate Default Max Box Size is 6W
|
n/a
|
Default max box size is not hardcoded, but is a variable in the program
|
Validate Default Pack By is Mixed
|
n/a
|
Default pack by is not hardcoded, but is a variable in the program
|
Check the new FM is called from the US Packing Program
|
US
|
Check US program calls new FM and doesn’t use old code
|
Check the new FM is called from the China Packing Program
|
China
|
Check China program calls new FM and doesn’t use old code
|
Check the new FM is called in place of the old DSSCO FM
|
DSSCO
|
Check DSSCO calls new FM and not old one
|
Check the new FM is called in place of the old JCP FM
|
JCP
|
Check JCP program calls new FM and not old one
|
Pass one PO through FM that is not associated with a SO
|
DSSCO
|
Packing done based on Pack By Sku with Max Box Size 6W – any remainder inner cartons should be combined and packed 6W
|
Pass one PO through FM with some deleted line items that are not associated with a SO
|
DSSCO
|
Packing done based on Pack By Sku with Max Box Size 6W for non-deleted PO line items – any remainder inner cartons should be combined and packed 6W
|
Pass multiple PO’s through FM that is not associated with a SO
|
DSSCO
|
Packing done based on Pack By Sku with Max Box Size 6W – any remainder inner cartons should be combined and packed 6W
for PO’s not associated with SO and pack based on SO line item VAS if it is associated with a SO
|
Pass multiple PO’s through FM with some deleted line items that are not associated with a SO
|
DSSCO
|
Packing done based on Pack By Sku with Max Box Size 6W for non deleted PO line items – any remainder inner cartons should be combined and packed 6W
|
Pass multiple PO’s through FM with some that are associated with a SO and some that are not
|
DSSCO
|
Packing done based on Pack By Sku with Max Box Size 6W for PO’s not associated with SO and pack based on SO line item VAS if it is associated with a SO
|
Pass one delivery through FM
|
US, China, JCP
|
Packing done based on Pack By and Max Box Size from Delivery
|
Pass multiple deliveries through FM
|
US, China, JCP
|
Packing done based on Pack By and Max Box Size from Delivery and each delivery IDOC is processed individually
|
Pack with Alternate UOM 1 CAR = 9 EA
|
All
|
Max number of caps in 1W is 9
|
Pack with Alternate UOM 1 CAR = 10 EA
|
All
|
Max number of caps in 1W is 10
|
Pack with Alternate UOM 1 CAR = 7 EA
|
All
|
Max number of caps in 1W is 7
|
Pass one PO through FM that is associated with a SO with rejected line items
|
DSSCO
|
Packing done based on Pack By and Max Box Size from SO for unrejected SO line items only
|
Pass one PO through FM with some deleted line items that are associated with a SO with rejected line items
|
DSSCO
|
Packing done based on Pack By and Max Box Size from SO for unrejected SO line items and undeleted PO line items only
|
Pass multiple PO’s through FM that is associated with a SO’s with rejected line items
|
DSSCO
|
Packing done based on Pack By and Max Box Size from SO for unrejected SO line items only
|
Pass multiple PO’s through FM with some deleted line items that are associated with a SO’s with rejected line items
|
DSSCO
|
Packing done based on Pack By and Max Box Size from SO for unrejected SO line items and undeleted PO line items only
|
Create sales order with just pre-pack materials (P12, P6) using PPP code
|
All
|
Correct number of handling units created based on quantity ordered
|
Create sales order with pre-packs and EA's using PPP code
|
All
|
Packing program errors and delivery is not updated
|
Create sales order with just EA's using PPP code
|
All
|
Packing program errors and delivery is not updated
|
Crossdock with run size ratio between 1 - 15
|
All
|
Pack by 1W
|
Crossdock with run size ratio between 16 – 30
|
All
|
Pack by 2W
|
Crossdock with run size ratio between 31 – 45
|
All
|
Pack by 3W
|
Caselot specifying max box size 1W
|
All
|
Pack by 1W
|
Caselot specifying max box size 4W
|
All
|
Pack by 4W
|
Caselot specifying max box size 6W
|
All
|
Pack by 6W
|
Caselot without specifying max box size
|
All
|
Correct error message displayed
|
Crossdock with incorrect quantities to run size ratio
|
All
|
Correct error message displayed
|
Caselot with incorrect quantities to run size ratio
|
All
|
Correct error message displayed
|
Crossdock with text in language other than EN
|
All
|
Pack based on size run and appropriate max box size
|
Caselot with text in language other than EN
|
All
|
Pack based on size run and appropriate max box size
|
Create sales order with P* UOM without any P codes
|
All
|
Should default to 6W and pack mixed and created correct number of handling units based on quantities
|
Create sales order with mixed P* UOM without any P codes
|
All
|
Should default to 6W and pack mixed and created correct number of handling units based on quantities
|
Create sales order with mixed P* and EA UOM without any P codes
|
All
|
Should default to 6W and pack mixed and created correct number of handling units based on quantities
|
Create sales order with EA UOM without any P codes
|
All
|
Should default to 6W and pack mixed and created correct All number of handling units based on quantities
|
Create an order that is pack mixed with a material that has an Alternate UOM
|
All
|
All non-alternate UOM materials are pack mixed, while any materials with alternate UOM is packed by family – remaining inner cartons are combined into max box size
|
Pack with EA UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – no alt UOM
|
All
|
Each line item packed individually based on max box size and pack by
|
Pack with P* UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – no alt UOM
|
All
|
Each line item packed individually based on max box size and pack by
|
Pack with mixed EA and P* UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – no alt UOM
|
All
|
Each line item packed individually based on max box size and pack by
|
Pack with EA UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – with some alt UOM
|
All
|
Each line item packed individually based on alternate UOM, max box size and pack by
|
Pack with P* UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – with some alt UOM
|
All
|
Each line item packed individually based on alternate UOM, max box size and pack by
|
Pack with mixed EA and P* UOM using 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W with random Pack By Family or Sku per line item all in same sales order – with some alt UOM
|
All
|
Each line item packed individually based on alternate UOM, max box size and pack by
|
Pack Mixed with EA UOM with 1W
|
All
|
Pack mixed into 1W
|
Pack Mixed with P* UOM with 2W
|
All
|
Pack mixed into 2W – remaining inner cartons combined into max box size
|
Pack Mixed with EA and P* UOM with 3W
|
All
|
Pack mixed into 3W – remaining inner cartons combined into max box size
|
Pack Mixed with EA UOM with 4W
|
All
|
Pack mixed into 4W – remaining inner cartons combined into max box size
|
Pack Mixed with P* UOM with 6W
|
All
|
Pack mixed into 6W – remaining inner cartons combined into max box size
|
Pack Mixed with EA and P* UOM with 10W
|
All
|
Pack mixed into 10W – remaining inner cartons combined into max box size
|
Pack Mixed with EA and P* UOM with 12W
|
All
|
Pack mixed into 12W – remaining inner cartons combined into max box size
|
Pack by SKU / Size without defining max box size
|
All
|
Pack by sku with max box size 6W
|
Pack by Material / Family without defining max box size
|
All
|
Pack by family with max box size 6W
|
Mixed Pack with without defining max box size
|
All
|
Pack mixed with max box size 6W – any alterate UOM shouls be packed by family and remaining inner cartons combined into max box size
|
Create PO with non-SO related line items and SO related line items
|
DSSCO
|
SO related line items will pack by VAS from SO, non-SO related line items will pack by Sku with max box size 6W, and no inner cartons should be combined
|
Pack Mixed with EA and P* UOM with 9W
|
All
|
Pack mixed into 9W – remaining inner cartons combined into max box size
|
SSCC handling unit should be unique per box
|
All
|
Ensure SSCC numbers
are unique for each record
|
DSSCO records should be sorted by grid key
|
All
|
DSSCO records sorted by Sales Order, Box Number, Line item and Grid Sort Key (not numerical or alphabetical)
|
Run packing manually at the same time job runs
|
All
|
Ensure SSCC numbers are not duplicated
|
Create PO with non-SO related line items and SO related line items (use more than one SO on the PO)
|
All
|
SO related line items will pack by VAS from SO, non-SO related line items will pack by Sku with max box size 6W, and no inner cartons should be combined
|
Pack Mixed with EA and P* UOM with 9W
|
All
|
Pack mixed into 9W – remaining inner cartons combined into max box size
|
Cross dock scenario with 1-15,16-30,31- 45 to Pack 1W,2W and 3W respectively.
|
All
|
Each item should be packed as per their run size ratio
|
Pass single PO with some items associated with SO and some items that are not associated with SO
|
All
|
The items that are not associated with SO should be packed by pack by SKU and max box size and the items that are associated with SO should be packed based upon the VAS codes from SO.
|
Pass single PO with materials as follows :
a. Material 1 with no alternate UOM with max box size.
b. Material 2 with some Alternate UOM with pack by SKU and max box size.
|
All
|
Material 1 will get packed by pack mix, Material 2 will get packed by Family with max box size from material 1 as it is the first item in the PO with pack mix logic, Remaining inner cartons should be combined
|
Pass two deliveries through FM and program one delivery with no alternate UOM and one with some Alternate UOM
|
US, China
|
The delivery with no Alternate UOM should not be packed by the Alternate UOM of another delivery.
|
Create JCP 753 with contract and multiple call offs - make sure these is a JM and ZC partner associated
|
JCP
|
Ensure all call offs have the correct weight and delivery information
|
Variables ZRSD_PACKING_INBD, ZRSD_PACKING and ZRSD_CHINA commented from program
|
US, China
|
Ensure code regarding SSCC numbers in TVARVC and ZRSD_PACKING_INBD variable are commented out and existing values in the TVARVC table do not change
|
Get list of deliveries that meet US delivery selection criteria and make sure they are packed after the first batch job is run
|
US
|
After first batch job is run, no deliveries matching the selection criteria should exist
|
Get list of deliveries that meet China delivery selection criteria and make sure they are packed after the first batch job is run
|
China
|
After first batch job is run, no deliveries matching the selection criteria should exist
|
Run US Delivery Batch Job - create sales orders for plants in NA delivery job variant, allocate and then run batch job
|
US
|
Ensure deliveries are created and packed appropriately, making sure ZRSD_PACKING variable remains unchanged
|
Run China Delivery Batch Job - create sales orders for plants in Mainland delivery job variant, allocate and then run batch job
|
China
|
Ensure deliveries are created and packed appropriately, making sure ZRSD_PACKING_CHINA variable remains unchanged
|
Solution Details
US Packing Program
Fetch the deliveries related to shipping points given in the selection input from table LIKP.
Consider only deliveries of type 'LF' and which are not PGI'd.
For above deliveries get the packing status from VBUK.
Consider only deliveries which are having the status not packed (PKSTK <>
'C').
Pass these deliveries to the new FM 'ZFM_PACKING' which returns the idoc data for packing.
Using idoc type '/AFS/DELVRY03' to pack the deliveries.
China Packing Program
Fetch the deliveries related to China shipping points which are maintained in TVARVC table from the table LIKP.
Consider only deliveries of type 'LF' and which are not PGId.
For above deliveries get the packing status from VBUK.
Consider only deliveries which are having the status not packed (PKSTK <>
'C').
Pass these deliveries to the new FM 'ZFM_PACKING' which returns the idoc data for packing.
Using idoc type '/AFS/DELVRY03' pack the deliveries.
DSSCO
This is a Simulation FM and its being used by NEWERA to simulate packing for PO's.Improved the performane by adding an additional parameter KAPPL value as V1 for the purchase orders and V2 for deliveries.
JCP753
This program is specially designed for JCPenny.
This program passes deliveries to New FM 'ZFM_PACKING' to get the Carton weights from packing.
Packing New FM
Function Module Name:
ZRSD_PACKING
1) Determine the input type is being passed by either a list of Purchase Orders or Deliveries.
2) If the input type is PO, based on the Purchase Order numbers passed, get all the undeleted PO line item data.
3) Determine the Alternate UOM Pack Qty for materials that are associated with the line items and based on the cartorn size the eaches(EA) should be determined.
4) Pack the PO's that are associated with Sales Orders and without Sales Orders.
5) If the PO is associated with Sales Order then packing should be done based VAS Codes maintained in the Sales Order
6) If the PO without associated Sales Orders then the packing should be done based on the Default Pack By SKUand Default Max Box Size (P07-6W) and if there
are no VAS codes maintained in Order/Delivery, Default Pack type is 'PACK BY MIXED' (P19) and Default Max Box Size is '6W' (P07).
7) If there are any remaining inner cartons that are less than the max box size, combine them to fit into master cartons.
8) The Max Box Size of Handling Unit is '6W', if the size is not mentioned.
9) Default packing type is 'Pack Mixed', if the packing type is not mentioned.
10) Get the VAS codes for the associated line item data.
11) Determine if any of the VAS codes are “PPP” (Pre-Packed Packing).
12) Determine if any of the line item units of measure are “EA”.
13) For Pre-Packed VAS Packing, it should create one handling unit using 1W box size for each unit ordered.
14) For Crossdock Packing(ZCD), it should be packed using the ratios from the ‘Customer Caselot Quantity’ line item.
15) There is no VAS code associated with Crossdocks.
16) The max box size used for a Crossdock depends on the size run (sum of ratio).
17) It is packed smilar to Pack by Family, where only the same materials can be packed together.
18) Once the line item ratio is determined, the max box size is defined, the packing should be based on the grid quantities.
19) For Caselot Packing(ZCL), it should be packed using the ratios from the ‘Customer Caselot Quantity’ line item.
20) For Caselot Packing there are VAS codes 'P16' , 'P17', 'P18' to determine the max box size.
21) P19 – Pack Mixed allows any material and size to be packed in one handling unit (considers entire order quantity)
22) P02 – Pack by Family only allows the same material to be packed in one handling unit (considered line item quantities)
23) P01 – Pack by Sku only allows the same material and grid to be packed in one handling unit (considers schedule line quantities)
24) There are different sizes to determine Max Box Size, they are: 1W, 2W, 3W, 4W, 6W, 9W, 10W and 12W
25) Pack Mixed allows for any material and size to be packed into the same handling unit.
26) So based on the max box size, as many caps that will fit into a handling unit should be packed.
27) Internal Number Object 'LE_SSCC' is used for SSCC Numbers
28) Pack Codes for Max Box Sizes are
P05 – Max Box Size 1W
P03 – Max Box Size 2W
P04 – Max Box Size 3W
P06 – Max Box Size 4W
P07 – Max Box Size 6W
PA3 – Max Box Size 9W
P20 – Max Box Size 10W
P94 – Max Box Size 12W
P16 – Max Box Size 1W (Only for Caselot)
P17 – Max Box Size 4W (Only for Caselot)
P18 – Max Box Size 6W (Only for Caselot)
29) Pack Codes for Pack Types are
PPP – Pre-Packed
ZCL – Case Lot
ZCD – Cross Dock
P01 – Pack By SKU
P02 – Pack By Family (Material)
P19 – Pack By Mixed
30) Attached document contains optimized logic(Adding) for packing remaining inner cartons which are less than Max Box Size if Pack type is Mixed or DSSCO PO's without Sales Orders.
Issues
Issue No
|
Date
|
Description
|
Recap
|
1
|
03/09/2013
|
Case Lot & Cross Dock Text Sequence
|
5380
|
2
|
03/22/2013
|
Case Lot & Cross Dock Grids Sequence
|
5947
|
Issue 1: Case Lot & Cross Dock Text Sequence
For Case Lot and Cross Dock, Initially the new FM was designed in such a away that the Size Run Ratio(TEXT) will maintain in a single line. But sometimes while creating Sales Order through IDOC the Ratio will be in multiple lines(Which are equal to No. of Grids in an item) like below.
Solution: Change the FM logic to get all the ratio lines from text instead of considering only one line.
Issue 2: Case Lot & Cross Dock Grid Sequence
In Sales orders created from IDOC, sometimes Items grids are in sorting order(as Standard) and respective Schedule lines are not in sequence. Initially for CL or CD we match Size run ratio with Schedule Line numbers and pack the Order. But according to business, they want to match the size run ratio with grid sequence in sales order items.
Solution:Changes done to match Size run ratio with the Grids Sequence ( Quantities) instead of Schedule line numbers. Sort the entries based on Grids sort sequence and change respective schedule line number to match its Grid position.